//package com.zyf.cloud.common.utils;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.bonade.common.vo.RequestRouteVO;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//
//import java.util.List;
//
///**
// * 解析APP传递参数工具类
// *
// * @author YY
// */
//@Slf4j
//public class AppUtil {
//    private AppUtil(){}
//
//    /**
//     * 头部参数键值，用于描述该请求的系统类型等
//     */
//    private static final String PARAM_HEADER_KEY = "RequestRoute";
//
//    /**
//     * 安卓客户端
//     */
//    private static final String SYSTEM_ANDROID = "android";
//
//    /**
//     * IOS客户端
//     */
//    private static final String SYSTEM_IOS = "ios";
//
//    /**
//     * 线上版本
//     */
//    private static final String SYSTEM_ONLINE = "online";
//
//    /**
//     * 薪起程APP
//     */
//    private static final String SYSTEM_XQC_APP = "xqc_app";
//
//    /**
//     * 公务车
//     */
//    private static final String SYSTEM_OFFICIAL_CAR = "official_car_app";
//
//    /**
//     * 从头部请求参数中获取APP系统类型（ios/android)
//     *
//     * @param jsonParam json格式的参数，内含键为{@code RequestRoute}值为{@link RequestRouteVO}列表的格式数据
//     * @return 匹配的系统类型(ios/android) 或者 {@code null}（如果出现异常或者参数为空）
//     *
//     * @author YY
//     * @since 1.0.0
//     */
//    public static String getMobileSystem(String jsonParam) {
//        try {
//            if (StringUtils.isNotBlank(jsonParam)) {
//                JSONObject reqHeadJson = JSONObject.parseObject(jsonParam);
//                String routeJson = reqHeadJson.getString(PARAM_HEADER_KEY);
//                JSONArray routeArray = JSONArray.parseArray(routeJson);
//                List<RequestRouteVO> routeList = (List<RequestRouteVO>) JSONArray.toJavaObject(routeArray,
//                        RequestRouteVO.class);
//                if (routeList != null) {
//                    for (RequestRouteVO rr : routeList) {
//                        if(StringUtils.isNotBlank(rr.getSystem())) {
//                            if(SYSTEM_ANDROID.equalsIgnoreCase(rr.getSystem())) {
//                                return SYSTEM_ANDROID;
//                            } else if(SYSTEM_IOS.equalsIgnoreCase(rr.getSystem())){
//                                return SYSTEM_IOS;
//                            }
//                        }
//                    }
//                }
//            }
//        } catch (Exception ex) {
//            return null;
//        }
//        return null;
//    }
//
//    /**
//     * 获取系统环境H5的版本号
//     *
//     * @param map
//     * @return
//     */
//
//    /**
//     * 从头部请求参数中获取H5的版本号
//     *
//     * @param jsonParam json格式的参数，内含键为{@code RequestRoute}值为{@link RequestRouteVO}列表的格式数据
//     * @return 获取对应环境的H5版本号 或者 {@code null}（如果出现异常或者参数为空）
//     *
//     * @author YY
//     * @since 1.0.0
//     */
//    public static String getMobileVersion(String jsonParam, String environment) {
//        try {
//            if (StringUtils.isNotBlank(jsonParam)) {
//                JSONObject reqHeadJson = JSONObject.parseObject(jsonParam);
//                String routeJson = reqHeadJson.getString(PARAM_HEADER_KEY);
//                JSONArray routeArray = JSONArray.parseArray(routeJson);
//                List<RequestRouteVO> routeList = (List<RequestRouteVO>) JSONArray.toJavaObject(routeArray,
//                        RequestRouteVO.class);
//                if (routeList != null) {
//                    for (RequestRouteVO rr : routeList) {
//                        // 用传入的系统环境获取H5版本号
//                        if (rr.getSystem().equalsIgnoreCase(environment)
//                                || rr.getSystem().toLowerCase().contains(SYSTEM_ONLINE)
//                                || rr.getSystem().toLowerCase().startsWith(SYSTEM_XQC_APP)
//                                || rr.getSystem().toLowerCase().startsWith(SYSTEM_OFFICIAL_CAR)){
//                            return rr.getVersion().toLowerCase();
//                        }
//                    }
//                }
//            }
//        } catch (Exception ex) {
//            return null;
//        }
//        return null;
//    }
//}
